NamedParameterJdbcTemplate স্প্রিং জেডিবিসি (Spring JDBC) এর একটি গুরুত্বপূর্ণ ক্লাস, যা SQL কুয়েরিতে নামকৃত প্যারামিটার ব্যবহার করার সুবিধা প্রদান করে। এটি সাধারণ JdbcTemplate
এর উন্নত সংস্করণ, যেখানে প্যারামিটারাইজড কুয়েরি তৈরির সময় নামকৃত প্যারামিটার (Named Parameters) ব্যবহার করা যায়, যা কোডকে আরও পাঠযোগ্য, সহজ এবং ভুলমুক্ত করে তোলে।
NamedParameterJdbcTemplate
একটি ক্লাস যা স্প্রিং জেডিবিসি ফ্রেমওয়ার্কের অংশ। এটি JdbcTemplate
এর মত কাজ করে, তবে এটি SQL কুয়েরি এক্সিকিউট করার সময় প্যারামিটারাইজড কুয়েরিতে নামকৃত প্যারামিটার ব্যবহার করার সুযোগ দেয়। এর মাধ্যমে SQL কুয়েরি লেখার সময় প্যারামিটারগুলি নাম দ্বারা চিহ্নিত করা হয়, যেমন :param1
, :param2
, ইত্যাদি।
?
চিহ্ন দ্বারা স্থাপন করা হয়, কিন্তু নামকৃত প্যারামিটার ব্যবহার করলে প্রতিটি প্যারামিটার কী কাজ করছে তা সহজে বোঝা যায়।?
প্যারামিটারগুলো সঠিকভাবে ব্যবহার করা কঠিন হতে পারে। নামকৃত প্যারামিটার ব্যবহার করলে প্যারামিটারগুলোর অবস্থান ও অর্থ স্পষ্ট হয়ে ওঠে, ফলে ভুল হওয়ার সম্ভাবনা কমে।ধরা যাক, আমাদের একটি Employee
টেবিল থেকে কিছু ডেটা পড়তে হবে যেখানে id
এবং name
প্যারামিটার হিসেবে ব্যবহার করা হবে।
প্রথমে, NamedParameterJdbcTemplate
এবং ডেটাবেস সংযোগ সেটআপ করা প্রয়োজন।
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
public class DataSourceConfig {
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
DataSource dataSource = dataSource();
return new NamedParameterJdbcTemplate(dataSource);
}
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}
}
এখন, NamedParameterJdbcTemplate
ব্যবহার করে SQL কুয়েরি এক্সিকিউট করা হবে।
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import java.util.List;
import java.util.Map;
public class EmployeeDao {
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void setNamedParameterJdbcTemplate(NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
}
public List<Employee> getEmployeesByIdAndName(int id, String name) {
String sql = "SELECT * FROM Employee WHERE id = :id AND name = :name";
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("id", id);
parameters.addValue("name", name);
return namedParameterJdbcTemplate.query(sql, parameters, new EmployeeRowMapper());
}
}
এখানে EmployeeRowMapper
হল একটি কাস্টম ক্লাস যা RowMapper
ইন্টারফেস ইমপ্লিমেন্ট করে, যেটি SQL কুয়েরি থেকে প্রাপ্ত রেকর্ডকে Employee
অবজেক্টে ম্যাপ করবে।
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class EmployeeRowMapper implements RowMapper<Employee> {
@Override
public Employee mapRow(ResultSet rs, int rowNum) throws SQLException {
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setName(rs.getString("name"));
// আরও প্রপার্টি সেট করুন
return employee;
}
}
?
ব্যবহার না করে নামকৃত প্যারামিটার যেমন :id
, :name
ব্যবহার করতে পারা যায়, যা কোডের পাঠযোগ্যতা বাড়ায়।NamedParameterJdbcTemplate স্প্রিং জেডিবিসির একটি শক্তিশালী ক্লাস যা SQL কুয়েরিতে নামকৃত প্যারামিটার ব্যবহারের সুবিধা প্রদান করে। এটি কোডের পাঠযোগ্যতা এবং ডাইনামিক SQL কুয়েরি নির্মাণে সহায়ক। যখন SQL কুয়েরিতে অনেক প্যারামিটার থাকে, তখন এটি ব্যবহারের মাধ্যমে কোড সহজ এবং ভুলমুক্ত করা যায়।
Read more